﻿using Shared.Service.DataScopes;
using System;

namespace Shared.Service.DataScopeParsers
{
    /// <summary>
    /// 组织架构维度
    /// </summary>
    public interface IOrgDataScopeParser : IDataScopeParser
    {
        /// <summary>
        /// 是否是所有部门/ 如果是，则不需要进行组织架构曾经数据过滤
        /// </summary>
        bool OrgAll { get; }

        /// <summary>
        /// 所有组织架构包含（全国/商户/门店/部门） dptId
        /// </summary>
        /// <param name="dptIds"></param>
        /// <param name="containsSub"></param>
        /// <param name="dptType"></param>
        bool GetAllOrgIds(out string[] dptIds, bool containsSub = true, params string[] dptType);

        bool GetAllOrgIds(out string[] dptIds, string[] inputDptIds, bool containsSub = true,
            params string[] dptType);
        /// <summary>
        /// 所有商户级 DptId
        /// </summary>
        /// <param name="dptIds"></param>
        /// <returns></returns>
        bool GetAllOrgAreaIds(out string[] dptIds);

        /// <summary>
        /// 所有大学校级 DptId 
        /// </summary>
        /// <param name="dptIds"></param>
        /// <returns></returns>
        bool GetAllOrgSchoolIds(out string[] dptIds);

        /// <summary>
        /// 所有部门级 DptId 
        /// </summary>
        /// <param name="dptIds"></param>
        /// <returns></returns>
        [Obsolete]
        bool GetAllOrgDptIds(out string[] dptIds);

        /// <summary>
        /// 获取所有的门店 和部门 级的数据范围 并且被计算过， 如果门店内包含了所有的部门，则只保留门店
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        [Obsolete]
        bool GetAllSchoolAndDptPeparation(out BaseDataScope[] result, out bool isAll);

        bool GetAllOrgDptForLabel(out string[] dptIds, string inputDptId, params string[] cutSchoolIds);
    }
}
